package com.atguigu.bigdata.scala.chapter10

object Scala04_Transform {

    def main(args: Array[String]): Unit = {

        // TODO - 隐式转换
        // 参数可以设定默认值
        // 000000 => 123123

        // 如果声明函数参数时，预先判断出来，参数值在后期可能会发生变化，那么将这个参数设定为隐式参数
        // 所谓的隐式参数，就是让编译器识别的
        // 编译器当发现参数为隐式参数时，会在作用域中查找参数值，这个参数值称之为隐式变量，
        // 隐式变量的类型和隐式参数的类型保持一致

        def test( implicit password : String = "000000" ): Unit = {
            println("注册用户，初始密码为 ：" + password)
        }

        implicit val pswd : String = "123123"

        // 隐式参数的函数调用时，不适用参数列表
        test//注册用户，初始密码为 ：123123
        // 当增加参数列表小括号，等同于告诉编译器，不让编译器来帮我找参数值，我自己来找
        // 此时，隐式转换不起作用
        test()//注册用户，初始密码为 ：000000
        test("111111")//注册用户，初始密码为 ：111111
    }
}
